home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-02-19 | 4.4 KB | 112 lines | [TEXT/CWIE] |
-
- #include "AbstractDesignator.h"
-
- //========================================================================================
- // CLASS TAbstractDesignator
- //========================================================================================
-
- #pragma segment ObjectResident
- ImplementSmallClassData(TAbstractDesignator, clDesignator);
-
- #pragma segment Foundation
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::~TAbstractDesignator:
- //----------------------------------------------------------------------------------------
- TAbstractDesignator::~TAbstractDesignator()
- {
- if(ObjectOfDesignation())
- ObjectOfDesignation()->DisposeDesignator();
- } // TAbstractDesignator::~TAbstractDesignator
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::IAbstractDesignator:
- //----------------------------------------------------------------------------------------
- void TAbstractDesignator::IAbstractDesignator(TAbstractScriptableObject* objectOfDesignation)
- {
- fObjectOfDesignation = objectOfDesignation == nil ? nil : objectOfDesignation->CloneDesignator();
-
- TAbstractScriptableObject::IAbstractScriptableObject();
- } // TAbstractDesignator::IAbstractDesignator
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::IsDesignator:
- //----------------------------------------------------------------------------------------
- Boolean TAbstractDesignator::IsDesignator()
- {
- return true;
- } // TAbstractDesignator::IsDesignator
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::DisposeDesignator
- //----------------------------------------------------------------------------------------
- void TAbstractDesignator::DisposeDesignator()
- {
- ASSERT(fReferenceCount >= 0);
- if(fReferenceCount == 0)
- delete this;
- else
- --fReferenceCount;
- }
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::CloneDesignator
- //----------------------------------------------------------------------------------------
- TAbstractScriptableObject* TAbstractDesignator::CloneDesignator()
- {
- ++fReferenceCount;
-
- return this;
- }
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::CloneOwnedObjects
- //----------------------------------------------------------------------------------------
- void TAbstractDesignator::CloneOwnedObjects()
- {
- if(this->fObjectOfDesignation != nil)
- this->fObjectOfDesignation = this->fObjectOfDesignation->CloneDesignator();
- fReferenceCount = 0;
-
- Inherited::CloneOwnedObjects();
- }
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::ParentObject:
- //----------------------------------------------------------------------------------------
- TAbstractScriptableObject* TAbstractDesignator::ParentObject(const TAETransaction&)
- {
- return this->ObjectOfDesignation() ? this->ObjectOfDesignation()->CloneDesignator() : nil;
- } // TAbstractDesignator::ParentObject
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::DelegateProperty:
- //
- // If a designator returns 'true' for some property, then that property will be
- // delegated to the designator's object of designation
- //----------------------------------------------------------------------------------------
- Boolean TAbstractDesignator::DelegateProperty(DescType /*propertyIdentifier*/)
- {
- return false;
- } // TAbstractDesignator::DelegateProperty
-
- //----------------------------------------------------------------------------------------
- // TAbstractDesignator::AccessByProperty:
- //----------------------------------------------------------------------------------------
- TAbstractScriptableObject* TAbstractDesignator::AccessByProperty(const TAETransaction& t, DescType propertyIdentifier)
- {
- TAbstractScriptableObject* propertyObject = nil;
-
- //
- // Ask the object of designation for a property if 'DelegateProperty' returns true
- //
- if((this->ObjectOfDesignation() != nil) && (this->DelegateProperty(propertyIdentifier)))
- {
- propertyObject = this->ObjectOfDesignation()->AccessByProperty(t, propertyIdentifier);
- }
- else
- propertyObject = Inherited::AccessByProperty(t, propertyIdentifier);
-
- return propertyObject;
- } // TAbstractDesignator::AccessByProperty
-